#include"snake.h"
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
// 函数的作用是按照给定的方向移动蛇，判断蛇移动后活着，当蛇活着的时候更新地图
void snake_move(int dx, int dy, int *is_live) {
    // 移动前蛇头的位置
	int headX = snakeX[snakeLength - 1]; 
	int headY = snakeY[snakeLength - 1]; 

    // 移动前蛇尾的位置
	int tailX = snakeX[0];
	int tailY = snakeY[0];

    // 蛇移动在地图上的位置变化实质就是原来蛇尾的位置变成了空，原来蛇头的位置变成了蛇身，蛇头被拿了出来进行进行判断是否吃到食物或者撞死了
	map[tailY][tailX] = BLANK_CELL;
	map[headY][headX] = SNAKE_BODY; 

    // 移动后蛇头的位置
	headX = headX + dx; 
	headY = headY + dy;

    // 移动后蛇头的位置有食物，进行吃食物的操作
	if (map[headY][headX] == SNAKE_FOOD) {
		snake_eat(headX, headY);// 
		map[tailY][tailX] = SNAKE_BODY;
		*is_live = 1;
	}

    // 移动后蛇头的位置有障碍物或者墙壁或者撞到了蛇身，蛇死掉
	else if (map[headY][headX] == OBSTACLE || map[headY][headX] == WALL_CELL || map[headY][heay] == SNAKE_BODY){
		*is_live = 0;
	}
    
    // 移动后蛇头的位置原来是空白的，则将蛇头加入地图，并更新整条蛇的位置
	else {
		map[headY][headX] = SNAKE_HEAD;
		for (int i = 0; i < snakeLength - 1; i++) {
			snakeX[i] = snakeX[i + 1];
			snakeY[i] = snakeY[i + 1];
		}
		snakeX[snakeLength - 1] = headX;
		snakeY[snakeLength - 1] = headY;
		*is_live = 1;
	}
}